package labox.innovation.gameserver.model.itemcontainer;

import labox.innovation.gameserver.model.L2ItemInstance;

/**
 * 仓库类
 * 
 * @author zjj
 * 
 */
public abstract class Warehouse extends ItemContainer {
	/**
	 * 仓库最大的 存储数量
	 */
	public static final int MAX_SLOTS = 60;
	/**
	 * 仓库当前 最大可用数量
	 */
	public int _maxCurrentSoltNums = INITIALIZE_NUM;

	public static final int INITIALIZE_NUM = 20;

	protected boolean[] _slots = new boolean[MAX_SLOTS + 1];

	/**
	 * 从仓库中移除物品
	 */
	@Override
	protected boolean removeItem(L2ItemInstance item) {
		if (item != null && item.getLocationSlot() >= 0){
			
			_slots[item.getLocationSlot()] = false;
			item.setLocation(getBaseLocation(), -1);
		}
			
		return super.removeItem(item);

	}

	/**
	 * 增加物品
	 */
	@Override
	protected void addItem(L2ItemInstance item) {
		super.addItem(item);

		if (item.getLocationSlot() >= 0) {
			_slots[item.getLocationSlot()] = true;
		}
	}

	/**
	 * 获得仓库的 可用大小
	 * 
	 * @return
	 */
	public int getWareHouseSize() {
		return _maxCurrentSoltNums;
	}

	/**
	 * 设置仓库的可用大小
	 * 
	 * @param size
	 */
	public void setWareHouseSize(int size) {
		_maxCurrentSoltNums = size;
	}

	/**
	 * 获得一个空的插槽 位置 默认 返回第一个位置
	 * 
	 * @return
	 */
	public int getSlot() {
		for (int i = 0; i < _maxCurrentSoltNums; i++) {
			if (!_slots[i]) {
				_slots[i] = true;
				return i;
			}
		}

		// 背包没有空余插槽 返回-1
		return -1;
	}

	/**
	 * 重新置装备插槽标记。 false表示 没物品
	 * 
	 * @param slot
	 */
	public void restSlot(int slot) {
		_slots[slot] = false;
	}
}
